package main

import (
	"github.com/hajimehoshi/ebiten"
)

//var AmountBarrier = 8
var gameState = 0  // 0是未开始 , 1是开始 , 2是结束
var Score int = 0 // 小鸟的分数
var isSpace bool = false
var locationTemp = 0
var isstop bool = false // 游戏是否暂停
var isPressStop bool = true



var obstacles []*NewBarrier // 切片存数组

/*
	Update()是一个成员函数，自动调用
	因为这是一个游戏开发的库，界面是需要实时更新的
	因此每一个周期，都会更新一次，也就是调用一次Update函数
	更新周期是1/60秒，也就是一秒会更新60次
*/

func (g *Game) Update(screen *ebiten.Image) error {
	deal() // 调用对象池

	// 绘制游戏准备页面
	g.DrawBegin(screen)
	if (gameState == 0){
		g.DrawReady(screen)
	}

	// 绘制游戏开始页面
	if (gameState == 1 ){
		g.DrawScore(screen)
	}

  //  小鸟 状态
	g.UpdateBird(screen)


	// 判断游戏是否结束
	if ((g.LocationY != 482 || g.BirdState !=0) && !isstop && gameState != 0){ // 没有结束
		obojsaasdf(obstacles)
	}else if  ((g.LocationY != 482 || g.BirdState != 0 ) && isstop) { // 游戏暂停
			//fmt.Println("暂停了 ，障碍物不能动了")
	}else if(g.LocationY == 482 || g.BirdState == 0 ) {  // 游戏结束
		gameState = 2
		g.DrawBegin(screen)
		g.DrawGameOver(screen)
	}

	// 此时游戏结束 考虑是否重开
	if (gameState == 2){
		if ebiten.IsKeyPressed(ebiten.KeySpace) {   // 按压空格后 重开
			Score = 0
			gameState = 1
			g.BirdState = 1
			g.LocationY = 200
			obstacles = obstacles[:0] // 清空 原来切片中的障碍物
			makeBarrier()
		}
	}

	//  判断游戏是否暂停
	if ebiten.IsKeyPressed(ebiten.KeyS) && isPressStop && gameState ==1 && g.BirdState != 0{
		isPressStop = false
		if (!isstop){
			isstop = true
		}else {
			isstop = false
		}
		//fmt.Println("此时的状态 ",isstop)
	}
	if !ebiten.IsKeyPressed(ebiten.KeyS) && !isPressStop {
		isPressStop = true
	}

	return nil
}

/*
	Draw()用于渲染界面，也是个会自动调用的函数
	这个函数的自动调用频率和你电脑显示器的刷新频率一样
	screen表示GUI窗口显示的对象，这里是在该窗口输出"飞翔的小鸟"
*/

func (g *Game) DrawBegin(screen *ebiten.Image) {
	//   1. 填充背景颜色  和  地板
	DrawBackGround(screen)

	 //2. 开始绘制:  障碍物
	g.DrawBarrier(screen)

	// 3. 绘制 小鸟
	g.DrawBird(screen)

}




/*
	Layout()函数的返回值表示显示窗口里面逻辑上屏幕的大小
	官网上说参数outsideWidth和outsideHeight是显示在桌面的窗口大小
	这里是固定大小
*/
func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {

	return 880, 520
}







